require(['zTreeCheckbox', 'validator', 'select2'], function () {
    //========================================================变量
    //TODO
    var userInfo = commonFun.execParentMethod("getUserInfo");				//当前用户信息
    // 如果是最高管理员登录,可以让其看到所属公司
    var isAdminRole = userInfo.isAdminRole;									//是否最高管理员
    var saveUrl = "/sysRole/saveSysRole.htm",								//保存动作访问的url
        updateUrl = "/sysRole/updateSysRole.htm",							//编辑动作访问的url
        listUrl = "/sysRole/getSysRoleByName.htm",							//初始化左侧角色列表的url，包含查询功能f
        sysRoleTreeObj = {},												//角色树对象
        form = $("#roleForm"),												//表单对象
        current_roles = [],													//当前角色
        $sysRoleTree = $("#sysRoleTree"),									//角色树对应元素
        url = saveUrl;														//点击保存ajax用的url，默认为保存的url
    //-------------------------------------------------------------------------------------------------函数声明
    //TODO
    /**
     * 初始化页面元素
     */

    commonFun.authorityLoad($(".user-btn-box"));

    function initElements() {
        //加载权限按钮(暂时屏蔽，无按钮权限)
        if (isAdminRole === "1") {
            $("#corp-div").show();
        }
        //初始化显示表单
        form.initForm();
        getRoleIdsByUserId();
        initSysRoleTree();
        $("#roleType").val("ROLT0002");
        if(userInfo.roleType == 'ROLT0001'){
            $("#corpli").show();
            $("#roleTypeli").show();
        }
    }

    /**
     * 获取用户角色
     */
    function getRoleIdsByUserId() {
        $.ajaxExt({
            url: "/sysRole/getRoleIdsByUserId.htm"
        }).done(function (data) {
            current_roles = data;
        });
    }

    /**
     * 点击左侧机构列表，填充右侧信息
     * @param item 节点数据
     */
    function fillfn(item) {
        // $.each(current_roles, function (n, role) {
        //     if (item.id == role.roleId) {
        //         $("#del").hide();
        //     } else {
        //         $("#del").show();
        //     }
        // });
        form.setValues(item);
        //通过点击的节点，获得父节点名称，显示在右侧的上级角色中
        var treeNode = sysRoleTreeObj.getSelectedNodes()[0]; // 获取当前节点
        if (treeNode.getParentNode() != null) {
            var pId = treeNode.getParentNode().id;
            var pName = treeNode.getParentNode().name;
            $("#parentRoleId").val(pId);
            $("#parentRoleName").val(pName);
        } else {
        	var pId = treeNode.tmpParentRid;
            $("#parentRoleId").val(pId);
            $("#parentRoleName").val("无");
        }
    }

    /**
     * 点击树节点
     * @param event 事件
     * @param treeId 节点id
     * @param treeNode 节点对象
     * @param clickFlag 点击标识
     */
    function sysRoleTreeClick(event, treeId, treeNode, clickFlag) {
        url = updateUrl;
        // 显示删除按钮
        // $("#del").show();
        //对应填充右侧数据
        fillfn(treeNode);
    }

    // 树的参数配置
    var setting = {
        data: {
            key: {
                name: "name"
            },
            simpleData: {
                enable: true,
                idKey: "id",
                pIdKey: "parentRoleId",
                rootPId: "0"
            }
        },
        view: {
            showIcon: true
        },
        callback: {
            onClick: sysRoleTreeClick
        }
    };

    /**
     * 获得节点数据，并且生成左侧的树
     * @param nodeId 节点id
     */
    function initSysRoleTree(nodeId) {
        $.ajaxExt({
            url: listUrl
        }).done(function (data) {
            if (!data) {
                data = [];
            }
            //生成树
            sysRoleTreeObj = $sysRoleTree.createTree(setting, data, {search: $('#search-text')});
            if (typeof nodeId !== "undefined") {//选中对应节点
                sysRoleTreeObj.setting.view.expandSpeed = "";
                sysRoleTreeObj.expandAll(true);
                sysRoleTreeObj.setting.view.expandSpeed = "fast";
                var node = sysRoleTreeObj.getNodesByFilter(function (node) {
                    return node.id == nodeId;
                }, true);
                sysRoleTreeObj.selectNode(node, false);
                sysRoleTreeClick(null, node.id, node, true);
            } else {//选中第一个节点
                sysRoleTreeObj.expandAll(true);
                var node = sysRoleTreeObj.getNodesByFilter(function (node) {
                    return node.level == 0;
                }, true);
                sysRoleTreeObj.selectNode(node, false);
                sysRoleTreeClick(null, node.id, node, true);
                // $("#del").hide();
            }
        });
    }

    /**
     * 添加角色后的一系列初始化动作
     */
    function addFun() {
        form[0].reset();//清空表单
        //设置为添加功能的url
        url = saveUrl;
        // 隐藏删除按钮
        // $("#del").hide();
        // 将左侧选中的树节点，设到右侧的上级分组文本框中
        var treeNode = sysRoleTreeObj.getSelectedNodes()[0]; // 获取当前节点
        $("#parentRoleId").val(treeNode.id);
        $("#parentRoleName").val(treeNode.name);
        $("#corpId").val(treeNode.corpId);
        $("#corpName").val(treeNode.corpName);
        $("#roleType").select2("val", "ROLT0002");
    }

    //-------------------------------------------------------------------------------------------------事件编辑
    //TODO
    //设置文本框光标
//    $("input").click(function () {
//        var t = $(this).val();
//        $(this).val("").focus().val(t);
//    });

    //新增
    $('#addNew').click(function () {
        addFun();
    });

    //更新、添加角色
    $("#save").click(function () {
        //表单校验
        var data = form.getValues();
        if(userInfo.roleType == 'ROLT0002'){
            data.corpId = userInfo.corpId;
            data.roleType = 'ROLT0002';
            $("#corpName").val("已填企业");
            $("#roleType").html('<option value="ROLT0002" selected="selected">已选择类型</option>');
        }
        if ($.validator(form)) {
            var loadMask = $.createMask();
            // if(data.roleId && userInfo.parentRole == data.roleId){
            //     $.messager.alert("提示", "不能修改您的上级角色!", "info");
            // }else{
            //
            // }
            //添加/编辑
            $.ajaxExt({
                url: url,
                data: data
            }).done(function (result) {
                if(result){
                    //刷新一下改变后的数据
                    initSysRoleTree(result.id);
                    $("#id").val(result.id);
                    url = updateUrl;//设置编辑功能url
                    $.messager.alert("提示", "保存成功!", "info");
                }else{
                    $.messager.alert("提示", "保存失败!", "info");
                }
            });
            loadMask.remove();
        }
    });

    //删除角色
    $("#del").click(function () {
        if ($("#name").val() && $("#id").val()) {
            var treeNode = sysRoleTreeObj.getSelectedNodes()[0]; // 获取当前节点
            if (treeNode.isParent) {
                $.messager.alert("警告", "该角色存在下级角色，不能删除！", "warning");
            } else {
                $.messager.confirm("是否删除", "是否删除选中的记录？", function (r) {
                    if (r) {
                        $.ajaxExt({
                            url:"/sysRole/getUserPageByUserRoleVo.htm",
                            async:true,
                            data:{
                                "corpId":$("#corpId").val(),
                                "roleId":$("#id").val()
                            }
                        }).done(function(data){
                            if(data && data.rows && data.rows.length > 0){
                                $.messager.confirm("是否删除","该角色已绑定用户，删除角色将解除，是否删除？", function (k) {
                                    if(k){
                                        delRole(treeNode);
                                    }
                                });
                            }else{
                                delRole(treeNode);
                            }
                        });
                    }
                });
            }
        } else {
            $.messager.alert("提示", "请选择已创建的角色!", "error");
        }
    });

    function delRole(treeNode){
        var id = '' + $("#id").val();//获取角色id
        $.ajaxExt({
            url: "/sysRole/delSysRole.htm",
            loadMask : true,
            data: {"id": id}
        }).done(function (data) {
            // if(result && result.success == true){
                $.messager.alert("提示", "已删除!", "info");
                if (treeNode.getParentNode() !== null) {
                    initSysRoleTree(treeNode.parentRoleId);
                } else {
                    initSysRoleTree();
                }
            // }else{
            //     $.messager.alert("提示", "删除失败!", "info");
            // }
        });
    }

    function resize() {
        $('#leftbox').css({
            height: $(window).height()
        });
        //左侧树高度
        $sysRoleTree.height($(window).height() - 55);
        $('#rightbox').css({
            height: $(window).height()
        });
    }
    
    if(userInfo.roleType != 'ROLT0001'){
    	$("#corpli").hide();
        $("#roleTypeli").hide();
    }

    $(window).on('resize', resize).trigger('resize');
    initElements();
});
